A/B实验(ABTest)
在LLM服务和搜索推广等诸多模型服务场景中,经常需要根据服务线上的效果调整模型服务,通过调整不同模型服务之间的流量分配,从而帮助业务方进行成本最低的快速实验,从而保证线上的模型服务效应最大化。A/B实验(ABTest)提供更加通用化的A/B评测实验能力,提供开箱即用的A/B平台能力。
使用限制
目前,仅华北2(北京)、华东2(上海)、华东1(杭州)和华南1(深圳)地域支持使用A/B实验(ABTest)。
目前,A/B实验(ABTest)暂不支持使用角色SSO的访问方式,仅支持通过RAM子账号进行访问。
计费说明
当前A/B实验(ABTest)功能已邀测发布,功能本身免费使用。其中会涉及到模型在线服务(EAS)和MaxCompute等相关云产品,这些云产品的计费单独收取,详情请参见模型在线服务(EAS)计费说明和MaxCompute计费概述。
名词解释
实验管理
实验:实验即为需要AB测试的不同实验版本组合,可包含 AA、 AB、ABC等不同组合方式。实验里的流量来自于实验层上,一个实验层上可以包含多个实验,这些实验之间的流量是互斥的。实验管理的是一组参数配置,可以控制程序执行流程,实验中的每个版本按照流量随机划分,不同的参数也可以对比其不同的效果。
实验项目:业务逻辑的聚合。比如LLM的Agent场景,相似业务场景下的服务都可以作为单独的场景。
实验域:一组流量的集合,也可根据具体的业务划分,由业务的属性来根据条件筛选决定,也可以随机分配。当由业务决定实验域流量的划分,用户可以自定义实现划分逻辑。
实验层:实验域下面包含一个或多个实验层。每个实验层的流量是正交的,每个实验层都会承载所在实验域的所有流量。
流量管理
人群:代表实验接入的一组特定流量ID的集合。
指标管理
指标:代表实验之间进行评判优劣的性能和服务等指标。
数据表:用于统计实验指标所需的数据源和相关字段。
全局配置
发布管理:将实验组中的效果更好的实验进行参数的推全。
产品架构
ABTest整体链路架构
您可以使用阿里云ABTest Web控制台进行实验和指标配置。
ABTest提供Go或Java SDK,您可以在服务端引用。SDK会拉取实验元数据,并根据访问上下文进行分流,执行相关业务逻辑。
您可以注册MaxCompute日志表(即来源数据表),系统会将其注册到ABTest Server中。APP产生各种行为日志后,会通过埋点方式将数据回流到MaxCompute日志表中。您在控制台配置实验指标时,如果日志表内容是近实时产生的,则实验指标可以同时生成小时级和天级的指标,并将指标存储到ABTest服务的Hologres存储中。
您可以在ABTest Web控制台查看实验报表数据。
实验的演化流程
单层实验:创建项目后,系统将自动创建默认的域和层,您可以在默认层上创建实验。实验可以获取层上的所有流量,也可以通过随机设置获取部分流量。实验包括多个版本,每个版本可通过设置流量百分比来划分总流量。
多层实验:单层实验可以扩展成多层,每个层上的流量是正交的,因此每个层上都可以设置实验。
层与域结合。一个层可以包含多个域,一个域也可以创建多个层,如上图所示。在多层流量实验中,您可以进行打通实验,或者在单独一个层上进行实验。您可以进行如下设置:
权限说明
为子账号授予访问ABTest的权限
为子账号授予 ABTest 的管理权限后,RAM用户即可拥有使用 ABTest 功能的完整权限。
主账号登录RAM 控制台。
创建权限策略,选择脚本编辑,将下列内容复制进去即可,策略名称为pai_abtest_full_access。具体操作请参见创建自定义权限策略。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "paiabtest:*", "Resource": "*" } ] }
在授权页面,将pai_abtest_full_access授予给子账号即可。具体操作请参见为RAM用户授权。
为ABTest授予访问其他云产品的权限
A/B实验(ABTest)需要进行SLR授权,权限角色名称为AliyunServiceRoleForPAIABTest。涉及到的权限内容如下所示。
{
"Version": "1",
"Statement": [
{
"Action": "ram:DeleteServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": "abtest.pai.aliyuncs.com"
}
}
},
{
"Effect": "Allow",
"Action": [
"odps:ActOnBehalfOfAnotherUser",
"odps:ListProjects",
"odps:ListTables"
],
"Resource": "acs:odps:*:*:users/*"
}
]
}